package com.ssy.lingxi.pay.api.model.vo.request.allInPay;

import lombok.Data;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;

/**
 * 通联支付退款申请请求实体类
 *
 * @author lqa
 * @version 2.0.0
 * @date 2021/12/5
 */
@Data
public class RefundVO implements Serializable {
    private static final long serialVersionUID = 3034638313459169267L;
    /**
     * 商户订单号
     */
    @NotNull(message = "商户订单号不能为空")
    private String bizOrderNo;

    /**
     * 商户原订单号
     */
    @NotNull(message = "商户原订单号不能为空")
    private String oriBizOrderNo;

    /**
     * 收款人会员id
     */
    @NotNull(message = "收款人会员id不能为空")
    private Long memberId;

    /**
     * 收款人会员角色id
     */
    @NotNull(message = "收款人会员角色id不能为空")
    private Long memberRoleId;

    /**
     * 退款方式 默认 D1 D1：D+1 日 14:30——18:00 分批向渠道 发起退款，退款到账时间以实际到账为 准D0：D+0 实时向渠道发起退款
     * 说明（1）此参数仅对支持退款金额原路返 回的支付订单有效（接口说明 3）
     * （2）不支持退款的渠道及内部账户， 实时退款至余额（接口说明 4）
     * 非必传
     */
    private String refundType = "D0";

    /**
     * 源托管代收订单付款信息  最多支持 100 个
     * 非必传
     */
    private List<RefundPayeeVO> refundList;

    /**
     * 本次退款总金额 单位：元。包含手续费
     * 不得超过原订单金额。
     */
    @NotNull(message = "本次退款总金额不能为空")
    private Double amount;

    /**
     * 非必传  代金券退款金额不得超过退款总金额，支持部分退款。 如不填，则默认为 0。 如为 0，则不退代金券。
     */
    private Integer couponAmount = 0;

    /**
     * 非必传  不得超过退款总金额。 如不填，则默认为 0。 如为 0，则不退手续费。
     */
    private Integer feeAmount = 0;

    /**
     * 接口将原样返回，不可包含“|”及换 行符+，空格，/，?，%，#，&，=等特 殊字符，最多 50 个字符
     * 非必传
     */
    private String extendInfo;
}
